// index.js
const app = getApp();
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'

Page({
  data: {
    motto: 'Hello World',
    userInfo: {
      avatarUrl: defaultAvatarUrl,
      nickName: '',
    },
    hasUserInfo: false,
    canIUseGetUserProfile: wx.canIUse('getUserProfile'),
    canIUseNicknameComp: wx.canIUse('input.type.nickname'),
    linkText: '', // User input link
    isLoading: false, // Loading state
    parsedContent: null, // Parsed content data
    contentType: '', // 'image' or 'video'
    originalUrl: '', // Original content URL with watermark
    freeCount: 3, // Daily free usage count
    isVip: false, // VIP status
    localFilePath: '', // 本地文件路径
    // 水印区域选择
    showWatermarkSelector: false, // 是否显示水印选择器
    watermarkRegion: {
      x: 50,
      y: 50,
      width: 200,
      height: 50
    },
    tempImagePath: '', // 临时图片路径，用于水印选择
  },
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    const { nickName } = this.data.userInfo
    this.setData({
      "userInfo.avatarUrl": avatarUrl,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  onInputChange(e) {
    const nickName = e.detail.value
    const { avatarUrl } = this.data.userInfo
    this.setData({
      "userInfo.nickName": nickName,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  onLoad(options) {
    // Check if the user has agreed to the terms
    const hasAgreed = wx.getStorageSync('hasAgreedToTerms');
    if (!hasAgreed) {
      this.showAgreement();
    }
    
    // Load usage count from global app data
    this.setData({
      freeCount: app.globalData.freeUsageCount,
      isVip: app.globalData.isVip
    });
    
    // 处理分享参数
    this.handleShareOptions(options);
    
    // 监听页面返回事件，用于处理授权页面返回
    this.setupPageShowListener();
  },
  onShow() {
    // Refresh data when coming back to this page
    this.setData({
      freeCount: app.globalData.freeUsageCount,
      isVip: app.globalData.isVip
    });
    
    // 检查是否有待处理的保存操作（从设置页面返回）
    this.checkPendingSaveOperations();
    
    // 检查loading状态，如果从授权页面返回但停留在loading状态，则重置
    this.checkAndResetLoadingState();
  },
  onLinkInput(e) {
    this.setData({
      linkText: e.detail.value
    });
  },
  // Paste from clipboard
  pasteLink() {
    wx.getClipboardData({
      success: (res) => {
        if (res.data) {
          this.setData({
            linkText: res.data
          });
          // Show toast
          wx.showToast({
            title: '已粘贴',
            icon: 'success',
            duration: 1000
          });
        } else {
          wx.showToast({
            title: '剪贴板为空',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '粘贴失败',
          icon: 'none'
        });
      }
    });
  },
  clearLink() {
    this.setData({
        linkText: ''
    });
  },
  // Parse content and remove watermark
  parseContent() {
    const { linkText, freeCount } = this.data;
    
    // 检查是否有免费次数
    if (freeCount <= 0) {
      wx.showModal({
        title: '免费次数已用完',
        content: '今日5次免费去水印次数已用完，请分享给好友获取更多免费次数',
        confirmText: '去分享',
        success: (res) => {
          if (res.confirm) {
            this.navigateToVip();
          }
        }
      });
      return;
    }

    // 处理链接，去除多余的空格和换行
    const cleanedLink = linkText.trim();
    
    // Validate link
    if (!this.validateLink(cleanedLink)) {
      wx.showModal({
        title: '链接格式不正确',
        content: '请输入有效的分享链接，目前支持抖音、快手、小红书等平台的链接。请确保复制了完整的分享链接。',
        showCancel: false,
        confirmText: '我知道了'
      });
      return;
    }

    // Show loading
    this.setData({
      isLoading: true
    });

    // Determine content type (simplified logic for demo)
    const contentType = this.guessContentType(cleanedLink);
    
    // Call the global app processMedia function
    app.processMedia(cleanedLink, contentType, (res) => {
      if (res.success) {
        // 更新使用次数 (无论是否VIP都减少次数)
        this.updateUsageCount();
        
        // Add to history
        app.addToHistory({
          type: res.data.type,
          url: res.data.url,
          cover: res.data.cover,
          title: res.data.title,
          originalUrl: res.data.originalUrl,
          sourceLink: cleanedLink
        });
        
        // 修正：如果是视频类型且有video_url字段，优先使用它
        if (res.data.type === 'video' && res.data.video_url) {
          res.data.url = res.data.video_url;
        }
        
        // 如果是视频，确保downurl字段优先使用
        if (res.data.type === 'video' && res.data.downurl) {
          res.data.url = res.data.downurl;
        }
        
        // 处理视频URL，防止跨域问题 - 改进版
        if (res.data.type === 'video' && res.data.url) {
          // 移除URL中的跨域引用参数
          let cleanUrl = res.data.url.split('#')[0];
          
          res.data.url = cleanUrl;
        }
        
        // Update UI
        this.setData({
          isLoading: false,
          parsedContent: res.data,
          contentType: res.data.type,
          originalUrl: cleanedLink
        });
      } else {
        this.setData({
          isLoading: false
        });
        wx.showModal({
          title: '解析失败',
          content: res.message || '无法解析该链接，请检查链接格式或尝试其他平台的链接',
          showCancel: false
        });
      }
    });
  },
  // Validate link format (basic check)
  validateLink(link) {
    // 检查链接是否为空
    if (!link || link.trim() === '') {
      return false;
    }
    
    // 检查是否包含URL特征
    if (link.includes('http://') || link.includes('https://')) {
      return true;
    }
    
    // 检查常见平台特征
    const platformPatterns = [
      'douyin', // 抖音
      'kuaishou', // 快手
      'xiaohongshu', // 小红书
      'bilibili', // B站
      'weibo', // 微博
      'ixigua', // 西瓜视频
      'huoshan', // 火山小视频
      'weishi', // 微视
      'pipixia', // 皮皮虾
      'zuiyou', // 最右
      'kaiyan', // 开眼
      'eyepetizer', // 开眼国际版
      'izuiyou', // 最右
      'gifshow', // 快手
      'quanmin', // 全民小视频
      'weibo.com', // 微博
      'weibo.cn', // 微博
      'douyin.com', // 抖音
      'kuaishou.com', // 快手
      'xiaohongshu.com', // 小红书
      'bilibili.com', // B站
      'ixigua.com' // 西瓜视频
    ];
    
    // 对于一些可能只粘贴了口令的情况，进行特殊处理
    if (link.includes('复制此链接') || 
        link.includes('抖音') || 
        link.includes('快手') || 
        link.includes('打开APP') || 
        link.includes('小红书')) {
      return true;
    }
    
    return platformPatterns.some(pattern => link.includes(pattern));
  },
  // Guess content type based on link
  guessContentType(link) {
    // 增强判断视频和图片类型的逻辑
    const videoPatterns = [
      'douyin', 'kuaishou', 'bilibili', 'ixigua', 
      'huoshan', 'weishi', 'video', 'mp4', 'mov', 
      '视频', '短视频'
    ];
    
    const imagePatterns = [
      'xiaohongshu', 'image', 'photo', 'jpg', 'jpeg', 
      'png', 'gif', 'weibo', '图片', '照片'
    ];
    
    // 优先检查是否匹配视频特征
    if (videoPatterns.some(pattern => link.toLowerCase().includes(pattern))) {
      return 'video';
    }
    
    // 然后检查是否匹配图片特征
    if (imagePatterns.some(pattern => link.toLowerCase().includes(pattern))) {
      return 'image';
    }
    
    // 默认返回视频类型，因为大部分平台以视频为主
    return 'video';
  },
  // Save media to album
  saveToAlbum() {
    const { parsedContent, contentType } = this.data;
    
    if (!parsedContent) return;
    
    // 检查隐私授权
    if (!wx.getStorageSync('hasAgreedToPrivacy')) {
      wx.showModal({
        title: '隐私授权',
        content: '保存内容到相册需要您同意隐私条款',
        confirmText: '同意',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            wx.setStorageSync('hasAgreedToPrivacy', true);
            // 用户同意后继续保存
            this.saveToAlbumAfterAuth();
          }
        }
      });
      return;
    }
    
    this.saveToAlbumAfterAuth();
  },
  
  // Save after authorization
  saveToAlbumAfterAuth() {
    const { parsedContent, contentType } = this.data;
    
    this.setData({ isLoading: true });
    
    if (contentType === 'image') {
      // 保存图片
      // 显示初始下载提示
      wx.showLoading({
        title: '准备下载 0%',
        mask: true
      });
      
      const downloadTask = wx.downloadFile({
        url: parsedContent.url,
        success: (res) => {
          if (res.statusCode === 200) {
            wx.hideLoading();
            wx.showLoading({
              title: '正在保存...',
              mask: true
            });
            
            wx.saveImageToPhotosAlbum({
              filePath: res.tempFilePath,
              success: () => {
                wx.hideLoading();
                wx.showToast({
                  title: '保存成功',
                  icon: 'success'
                });
              },
              fail: (err) => {
                wx.hideLoading();
                console.error('保存图片失败:', err);
                wx.showToast({
                  title: '保存失败',
                  icon: 'none'
                });
              }
            });
          } else {
            wx.hideLoading();
            wx.showToast({
              title: '下载失败',
              icon: 'none'
            });
          }
        },
        fail: () => {
          wx.hideLoading();
          wx.showToast({
            title: '网络错误',
            icon: 'none'
          });
        },
        complete: () => {
          this.setData({ isLoading: false });
        }
      });
      
      // 监听下载进度
      downloadTask.onProgressUpdate((res) => {
        wx.showLoading({
          title: `下载中 ${res.progress}%`,
          mask: true
        });
      });
    } else if (contentType === 'video') {
      // 保存视频
      // 显示初始下载提示
      wx.showLoading({
        title: '准备下载 0%',
        mask: true
      });
      
      const downloadTask = wx.downloadFile({
        url: parsedContent.url,
        success: (res) => {
          if (res.statusCode === 200) {
            wx.hideLoading();
            wx.showLoading({
              title: '正在保存...',
              mask: true
            });
            
            wx.saveVideoToPhotosAlbum({
              filePath: res.tempFilePath,
              success: () => {
                wx.hideLoading();
                wx.showToast({
                  title: '保存成功',
                  icon: 'success'
                });
              },
              fail: (err) => {
                wx.hideLoading();
                console.error('保存视频失败:', err);
                wx.showToast({
                  title: '保存失败',
                  icon: 'none'
                });
              }
            });
          } else {
            wx.hideLoading();
            wx.showToast({
              title: '下载失败',
              icon: 'none'
            });
          }
        },
        fail: () => {
          wx.hideLoading();
          wx.showToast({
            title: '网络错误',
            icon: 'none'
          });
        },
        complete: () => {
          this.setData({ isLoading: false });
        }
      });
      
      // 监听下载进度
      downloadTask.onProgressUpdate((res) => {
        wx.showLoading({
          title: `下载中 ${res.progress}%`,
          mask: true
        });
      });
    }
  },
  // Preview image
  previewImage(e) {
    const url = e.currentTarget.dataset.url;
    wx.previewImage({
      urls: [url],
      current: url
    });
  },
  // Update usage count
  updateUsageCount() {
    const { freeCount } = this.data;
    const newCount = Math.max(0, freeCount - 1);
    
    // 使用app.js中的方法更新次数，同时更新本地和云端
    app.updateFreeUsageCount(newCount);
    
    // 更新UI
    this.setData({ freeCount: newCount });
  },
  // Navigate to VIP page
  navigateToVip() {
    wx.switchTab({
      url: '/pages/vip/vip'
    });
  },
  // Show user agreement
  showAgreement() {
    wx.showModal({
      title: '用户使用协议',
      content: '欢迎使用喵小喵去水印！使用本工具代表您同意：\n\n' + 
               '1. 仅将本工具用于个人非商业用途\n\n\n' + 
               '2. 不用于侵权盗版等违法内容\n\n\n' + 
               '3. 尊重原创作者和平台规则\n\n\n' + 
               '4. 您需对使用本工具的行为承担法律责任',
      confirmText: '同意',
      showCancel: false,
      success: (res) => {
        if (res.confirm) {
          wx.setStorageSync('hasAgreedToTerms', true);
        }
      }
    });
  },
  // Share app
  onShareAppMessage(res) {
    // 获取设备ID作为用户唯一标识
    const deviceId = app.getDeviceId();
    
    // 如果是按钮触发的分享
    if (res && res.from === 'button') {
      // 如果是结果页分享，带上当前解析的视频/图片链接
      const shareParams = this.data.parsedContent ? {
        title: '${nickname}推荐【喵小喵去水印】一键去除视频水印',
        path: `/pages/index/index?share_source=result&original_url=${encodeURIComponent(this.data.originalUrl)}&from_user=${deviceId}`
      } : {
        title: '${nickname}推荐【喵小喵去水印】一键去除视频水印',
        path: `/pages/index/index?share_source=default&from_user=${deviceId}`
      };
      
      return shareParams;
    }
    
    // 普通分享
    return {
      title: '${nickname}推荐【喵小喵去水印】一键去除视频水印',
      path: `/pages/index/index?share_source=default&from_user=${deviceId}`
    };
  },
  // 处理分享结果
  onShareAppMessageCallback(res) {
    // res包含分享的详细信息，如分享成功与否，分享途径等
    // 此处可用于记录分享结果统计，暂不增加使用次数
    console.log('分享回调结果:', res);
  },
  // 选择本地图片
  chooseLocalImage() {
    // 检查使用次数
    if (this.data.freeCount <= 0 && !this.data.isVip) {
      wx.showModal({
        title: '免费次数已用完',
        content: '今日5次免费去水印次数已用完，请升级VIP继续使用',
        confirmText: '去升级',
        success: (res) => {
          if (res.confirm) {
            this.navigateToVip();
          }
        }
      });
      return;
    }
    
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        
        // 显示水印选择器
        this.showWatermarkSelector(tempFilePath);
      }
    });
  },
  
  // 选择本地视频
  chooseLocalVideo() {
    // 检查使用次数
    if (this.data.freeCount <= 0 && !this.data.isVip) {
      wx.showModal({
        title: '免费次数已用完',
        content: '今日5次免费去水印次数已用完，请升级VIP继续使用',
        confirmText: '去升级',
        success: (res) => {
          if (res.confirm) {
            this.navigateToVip();
          }
        }
      });
      return;
    }
    
    wx.chooseVideo({
      sourceType: ['album', 'camera'],
      maxDuration: 60,
      camera: 'back',
      success: (res) => {
        // 获取视频第一帧作为封面
        const videoPath = res.tempFilePath;
        const coverPath = res.thumbTempFilePath || '';
        
        if (res.size > 50 * 1024 * 1024) { // 如果超过50MB
          wx.showModal({
            title: '文件过大',
            content: '视频文件超过50MB，可能需要较长处理时间。建议上传更小的视频。',
            confirmText: '继续处理',
            cancelText: '取消',
            success: (modalRes) => {
              if (modalRes.confirm) {
                // 用户确认继续处理
                this.startProcessMedia(videoPath, 'video', coverPath);
              }
            }
          });
        } else {
          // 直接开始处理
          this.startProcessMedia(videoPath, 'video', coverPath);
        }
      }
    });
  },
  
  // 处理本地媒体
  processLocalMedia(filePath, type, coverPath = '') {
    // 显示加载提示
    this.setData({
      isLoading: true
    });
    
    // 调用app.js中的方法处理
    app.processLocalMedia(filePath, type, coverPath, (res) => {
      this.setData({
        isLoading: false
      });
      
      if (res.success) {
        // 更新UI显示结果
        this.setData({
          parsedContent: res.data,
          contentType: res.data.type,
          originalUrl: res.data.originalUrl
        });
        
        // 更新使用次数
        if (!this.data.isVip) {
          this.updateUsageCount();
        }
      } else {
        wx.showModal({
          title: '处理失败',
          content: res.message || '无法处理所选文件',
          showCancel: false
        });
      }
    });
  },
  
  // 显示水印选择器
  showWatermarkSelector(imagePath) {
    this.setData({
      showWatermarkSelector: true,
      tempImagePath: imagePath,
      watermarkRegion: {
        x: 50,
        y: 50,
        width: 200,
        height: 50
      }
    });
  },
  
  // 水印区域调整
  onWatermarkRegionChange(e) {
    const type = e.currentTarget.dataset.type;
    const value = e.detail.value;
    
    const newWatermarkRegion = { ...this.data.watermarkRegion };
    newWatermarkRegion[type] = value;
    
    this.setData({
      watermarkRegion: newWatermarkRegion
    });
  },
  
  // 确认水印区域
  confirmWatermarkRegion() {
    // 获取选定的水印区域和图片路径
    const { tempImagePath, watermarkRegion } = this.data;
    
    // 关闭选择器
    this.setData({
      showWatermarkSelector: false
    });
    
    // 开始处理图片
    this.startProcessMedia(tempImagePath, 'image', '', watermarkRegion);
  },
  
  // 取消水印选择
  cancelWatermarkSelection() {
    // 获取图片路径，使用智能检测（无水印区域）
    const { tempImagePath } = this.data;
    
    // 关闭选择器
    this.setData({
      showWatermarkSelector: false
    });
    
    // 直接处理图片，不指定水印区域
    this.startProcessMedia(tempImagePath, 'image');
  },
  
  // 开始处理媒体
  startProcessMedia(filePath, type, coverPath = '', watermarkRegion = null) {
    // 检查使用次数
    if (this.data.freeCount <= 0 && !this.data.isVip) {
      wx.showModal({
        title: '免费次数已用完',
        content: '今日5次免费去水印次数已用完，请升级VIP继续使用',
        confirmText: '去升级',
        success: (res) => {
          if (res.confirm) {
            this.navigateToVip();
          }
        }
      });
      return;
    }
    
    // 显示加载提示
    this.setData({
      isLoading: true
    });
    
    // 调用app.js中的方法处理
    app.processLocalMedia(filePath, type, coverPath, (res) => {
      this.setData({
        isLoading: false
      });
      
      if (res.success) {
        // 更新UI显示结果
        this.setData({
          parsedContent: res.data,
          contentType: res.data.type,
          originalUrl: res.data.originalUrl || filePath
        });
        
        // 更新使用次数
        if (!this.data.isVip) {
          this.updateUsageCount();
        }
        
        // 显示成功提示
        wx.showToast({
          title: '处理成功',
          icon: 'success'
        });
      } else {
        wx.showModal({
          title: '处理失败',
          content: res.message || '无法处理所选文件',
          showCancel: false
        });
      }
    }, watermarkRegion);
  },
  
  // 视频开始播放事件
  onVideoPlay() {
  },
  
  // 视频错误事件
  onVideoError(e) {
    const { parsedContent } = this.data;
    console.error('视频播放错误:', e.detail.errMsg);
    
    // 如果是抖音视频，提供特别处理
    if (parsedContent.isDouyinVideo) {
      wx.showModal({
        title: '抖音视频播放提示',
        content: '抖音视频暂时无法直接播放，建议保存到相册后观看。',
        confirmText: '保存视频',
        cancelText: '取消',
        success: (res) => {
          if (res.confirm) {
            this.saveToAlbum();
          }
        }
      });
      return;
    }
    
    // 其他视频尝试使用不同的播放方式
    wx.showModal({
      title: '视频播放错误',
      content: '视频播放失败，可能是由于格式不兼容。您可以尝试保存到相册后查看。',
      confirmText: '保存视频',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          this.saveToAlbum();
        }
      }
    });
  },
  // 处理分享参数
  handleShareOptions(options) {
    if (!options) return;
    
    // 如果是从分享打开的
    if (options.share_source) {
      // 获取当前用户信息
      wx.login({
        success: (loginRes) => {
          if (loginRes.code) {
            // 将code作为临时openid使用
            const tempOpenid = 'tmp_' + loginRes.code;
            
            // 记录分享来源
            console.log('分享来源:', options.share_source);
            
            // 如果带有原始URL，可以直接填入输入框
            if (options.original_url) {
              try {
                const decodedUrl = decodeURIComponent(options.original_url);
                this.setData({
                  linkText: decodedUrl
                });
              } catch (e) {
                console.error('解码URL失败:', e);
              }
            }
            
            // 给分享者增加次数
            // 注意：真实环境中应通过云函数或服务端接口获取真实openid
            if (options.from_user) {
              const fromOpenid = options.from_user;
              
              // 打开VIP页面的handleFriendOpened方法
              const pages = getCurrentPages();
              const vipPage = pages.find(p => p.route === 'pages/vip/vip');
              
              if (vipPage && typeof vipPage.handleFriendOpened === 'function') {
                vipPage.handleFriendOpened(fromOpenid);
              } else {
                // 如果VIP页面不存在，直接使用app的处理方法
                app.handleShareReward(null, fromOpenid);
              }
            }
          }
        }
      });
    }
  },
  // 检查并处理待处理的保存操作
  checkPendingSaveOperations() {
    // 检查是否有来自授权设置的待处理操作
    if (this.pendingSaveVideoFile || this.pendingSaveImageFile) {
      console.log('检测到有待处理的保存操作');
      
      // 检查授权状态
      wx.getSetting({
        withSubscriptions: true,
        success: (res) => {
          if (res.authSetting['scope.writePhotosAlbum']) {
            console.log('用户已授权保存到相册');
            
            // 处理视频保存
            if (this.pendingSaveVideoFile) {
              const { filePath, backupUrl, videoUrl } = this.pendingSaveVideoFile;
              // 清除待处理状态
              this.pendingSaveVideoFile = null;
              
              // 显示加载提示
              wx.showLoading({
                title: '正在保存...',
                mask: true
              });
              
              console.log('继续保存视频:', filePath);
              // 执行保存
              this.doSaveVideoFile(filePath, backupUrl, videoUrl);
            }
            
            // 处理图片保存
            if (this.pendingSaveImageFile) {
              const { filePath } = this.pendingSaveImageFile;
              // 清除待处理状态
              this.pendingSaveImageFile = null;
              
              console.log('继续保存图片:', filePath);
              // 执行保存
              this.doSaveImageFile(filePath);
            }
          } else {
            console.log('用户未授权保存到相册');
            // 清除待处理状态
            this.pendingSaveVideoFile = null;
            this.pendingSaveImageFile = null;
            
            // 使用Toast而非Modal，避免用户刚从设置页返回又看到弹窗
            wx.showToast({
              title: '未获得授权',
              icon: 'none',
              duration: 2000
            });
          }
        },
        fail: (err) => {
          console.error('获取授权状态失败:', err);
          // 清除待处理状态
          this.pendingSaveVideoFile = null;
          this.pendingSaveImageFile = null;
        }
      });
    }
  },
  // 检查并重置loading状态，防止页面卡在loading状态
  checkAndResetLoadingState() {
    // 获取当前时间
    const now = Date.now();
    
    // 获取上次设置loading状态的时间
    const lastLoadingTime = this.lastLoadingTime || 0;
    
    // 如果loading状态为true，且已经超过5秒，认为是异常状态，重置loading
    if (this.data.isLoading) {
      // 长时间loading状态，可能是从授权页面返回但没有正确重置
      if (now - lastLoadingTime > 5000) {
        console.log('检测到长时间loading状态，自动重置');
        this.setData({ isLoading: false });
        
        // 同时隐藏可能存在的loading提示
        wx.hideLoading();
      } else {
        // 设置一个定时器，5秒后再次检查
        setTimeout(() => {
          this.checkAndResetLoadingState();
        }, 5000);
      }
    }
    
    // 页面变为可见时，如果存在loading状态，设置一个安全检查
    wx.onAppShow(() => {
      if (this.data.isLoading) {
        // 应用回到前台，设置一个定时器检查loading状态
        setTimeout(() => {
          if (this.data.isLoading) {
            console.log('应用回到前台，检测到loading状态未清除，自动重置');
            this.setData({ isLoading: false });
            wx.hideLoading();
          }
        }, 3000);
      }
    });
  },
  // 设置页面显示监听器
  setupPageShowListener() {
    // 添加页面显示事件监听
    wx.onAppShow(() => {
      // 页面重新显示时，如果是从设置页面返回，检查loading状态
      if (this.data.isLoading) {
        console.log('页面重新显示，检查loading状态');
        // 短暂延迟后检查loading状态
        setTimeout(() => {
          this.checkAndResetLoadingState();
        }, 1000);
      }
    });
  },
})
